본문으로 건너뛰기

chapter5

5.3 프록시​

  • 프록시가 응답을 위임하는 쪽(뒷단 서버)을 백엔드 또는 오리진이라고 한다.
  • 도입 목적은 성능과 보안 향상이다.
  • 예를 들어 HTTPS 요청을 받아 HTTP로 바꿔 백엔드에 보낼 수 있다(TLS 종료).
  • 종류는 리버스 프록시와 포워드 프록시 두 가지다.
구분리버스 프록시포워드 프록시
설치 위치서버 측 (웹 서버 바로 앞)사용자 측 네트워크
관리 주체서버 시스템 관리자사용자 조직(회사 등)
주 목적서버 보호, 부하 경감·분산외부 통신 제어·감시

5.3.1 리버스 프록시​

  • 서버를 관리하는 쪽의 시스템 관리자가 서버 측 아키텍처의 일부로 설치·관리한다.
  • 웹 서버 바로 앞에 둔다.
  • L7 프로토콜을 처리하는 리버스 프록시는 요청을 전달하면서 다음 작업을 한다.
    • 통신 내용 검사
    • 허가/거부
    • 내용 변환
    • 예: SQL 인젝션, 명령어 주입 관련 요청 차단
  • 유량 제어
    • 레이트 리밋(Rate Limit)
    • 서킷 브레이커(Circuit Breaker)
  • 서버 부하 경감
    • 콘텐츠 캐시
    • 부하 분산
  • 대표 제품: Apache, Varnish, Nginx

5.3.2 포워드 프록시​

  • 사용자 측 네트워크에 설치한다.
  • 회사 같은 조직에서 외부로 나가는 통신을 L7 수준에서 제어·감시한다.
  • 콘텐츠 캐시도 할 수 있다.

5.4 리트라이​

  • 네트워크는 본질적으로 불확실성을 내재하고 있다.
  • 리트라이는 어떤 처리가 실패했을 때 다시 실행하는 동작이다.
  • 지수 백오프(Exponential Backoff): 재시도 간격을 1초, 2초, 4초…처럼 지수적으로 늘려 상대 서버의 부하를 줄인다.
  • 지터(Jitter): 재시도 간격에 무작위 값을 더해, 여러 클라이언트의 재시도가 같은 시점에 몰리는 것을 막는다.
  • 상태를 변경하는 처리는 재시도로 인한 중복 처리를 막아야 한다.
    • 멱등 키(Idempotency Key) 를 이용해 처리 성공 여부를 기록해 둔다.
    • 같은 키로 요청이 다시 오면 처리하지 않고 기록된 결과를 돌려준다.

5.5 OODA 루프​

  • 관찰 정세판단 의사결정 행동